package demo8;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 * Spring容器配置类
 *
 * @Configuration标注的类就是Spring容器的配置类
 * 配置类上我们将来可以进行各种协助Spring容器进行初始化的操作
 */
@Configuration
@ComponentScan("demo8")//指定容器扫描的包
public class Config {
    /*
        可以在配置类上使用@Bean注解标注一个方法，那么这个方法返回的对象会纳入到Spring容器管理
        容器在初始化时会自动调用该方法。方法名字没有限制，做到见名知意即可。
        这样的操作为了解决那些我们在项目中引入的其他组件(例如之前学习的Druid连接池)，那些组件
        没有@Component注解，因此不会被Spring容器主动管理，此时我们可以通过这种方式向容器注册
        某些希望被管理的对象。
     */
    @Bean
    public Student initStudent(){
        //随然Student没有@Component注解，但是我们可通过这种方式将实例放入容器中
        return new Student();
    }

    @Bean
    public DruidDataSource initDataSource(){
        DruidDataSource ds = new DruidDataSource();
        ds.setUrl("jdbc:mysql://localhost:3306/bbs?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true");
        ds.setUsername("root");
        ds.setPassword("root");
        ds.setMaxActive(20);
        ds.setInitialSize(5);
        return ds;
    }
}









